﻿// 工作流Js接口
/*----------------------------------------------------------------------------------------------
//执行流程启动
//参数：
//      
//      pBillCode：单据编码
//      pBuDataIDStr：业务数据ID，如果多个，采用逗号隔开，如:id1,id2,id3……
//      pEmployeeID：流程操作人员ID
//      pJobVarStr：流程变量，格式为：A=1,B=2……，其中A、B为变量名称，1、2为变量值
//      pEmpCollection：指派人员过滤集合，如果多个用逗号隔开。如果活动的指派人员中只有部分人员可以进行处理，则需要传入此值进行过滤
//返回值：WorkflowReturn 流程返回对象
----------------------------------------------------------------------------------------------*/
function mDoWorkflowStart(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection) {
    return mDoWorkflow(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, "1", "");
}

/*----------------------------------------------------------------------------------------------
//执行流程收回
//参数：pBillCode：单据编码
//      pBuDataIDStr：业务数据ID，如果多个，采用逗号隔开，如:id1,id2,id3……
//      pEmployeeID：流程操作人员ID
//返回值：WorkflowReturn 流程返回对象
----------------------------------------------------------------------------------------------*/
function mDoWorkflowRecall(Home, pBillCode, pBuDataIDStr, pEmployeeID) {
    return mDoWorkflow(Home, pBillCode, pBuDataIDStr, pEmployeeID, "", "", "4", "");
}
/*----------------------------------------------------------------------------------------------
//执行流程处理
//参数：pBillCode：单据编码
//      pBuDataIDStr：业务数据ID，如果多个，采用逗号隔开，如:id1,id2,id3……
//      pEmployeeID：流程操作人员ID
//      pJobVarStr：流程变量，格式为：A=1,B=2……，其中A、B为变量名称，1、2为变量值
//      pEmpCollection：指派人员过滤集合，如果多个用逗号隔开。如果活动的指派人员中只有部分人员可以进行处理，则需要传入此值进行过滤
//返回值：WorkflowReturn 流程返回对象
----------------------------------------------------------------------------------------------*/
function mDoWorkflowTransact(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, pTranActTemplateID) {
    return mDoWorkflow(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, "2", pTranActTemplateID);
}

/*----------------------------------------------------------------------------------------------
//查看处理意见
//参数：pBillCode：单据编码
//      pBuDataIDStr：业务数据ID，如果多个，采用逗号隔开，如:id1,id2,id3……
//无返回值
----------------------------------------------------------------------------------------------*/
function mDoWorkflowViewOpinion(Home, pBillCode, pBuDataIDStr, pEmployeeID) {
    return mDoWorkflow(Home, pBillCode, pBuDataIDStr, pEmployeeID, "", "", "5", "");
    //return false;
}
/*----------------------------------------------------------------------------------------------
//流程跟踪
//参数：pBillCode：单据编码
//      pBuDataID：业务数据ID
//无返回值
----------------------------------------------------------------------------------------------*/
function mDoWorkflowTracker(Home, pBillCode, pBuDataID, pEmployeeID) {
    return mDoWorkflow(Home, pBillCode, pBuDataID, pEmployeeID, "", "", "6", "");
}
/*----------------------------------------------------------------------------------------------
//执行流程特送
//参数：pBillCode：单据编码
//      pBuDataIDStr：业务数据ID，如果多个，采用逗号隔开，如:id1,id2,id3……
//      pEmployeeID：流程操作人员ID
//      pJobVarStr：流程变量，格式为：A=1,B=2……，其中A、B为变量名称，1、2为变量值
//      pEmpCollection：指派人员过滤集合，如果多个用逗号隔开。如果活动的指派人员中只有部分人员可以进行处理，则需要传入此值进行过滤
//返回值：WorkflowReturn 流程返回对象
----------------------------------------------------------------------------------------------*/
function mDoWorkflowSpecialSend(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection) {
    return mDoWorkflow(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, "7", "");
}
/*----------------------------------------------------------------------------------------------
//执行流程办结
//参数：pBillCode：单据编码
//      pBuDataIDStr：业务数据ID，如果多个，采用逗号隔开，如:id1,id2,id3……
//      pEmployeeID：流程操作人员ID
//      pJobVarStr：流程变量，格式为：A=1,B=2……，其中A、B为变量名称，1、2为变量值
//      pEmpCollection：指派人员过滤集合，如果多个用逗号隔开。如果活动的指派人员中只有部分人员可以进行处理，则需要传入此值进行过滤
//返回值：WorkflowReturn 流程返回对象
----------------------------------------------------------------------------------------------*/
function mDoWorkflowEnd(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection) {
    return mDoWorkflow(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, "8", "");
}


/*----------------------------------------------------------------------------------------------*/
//内部工作流处理
//流程操作参数对象
function WorkflowParams() {
    var BillCode;
    var BuDataArr;
    var EmployeeID;
    var JobVarArr;
    var EmployeeCollection;
    var WFOperationType;
    var TranActTemplateID; //当同时可处理多个环节时，可指定处理某个环节
}
//检查流程操作参数
//返回值：true:参数有效;false:参数无效
function CheckWorkflowParams(pBillCode, pBuDataIDStr, pEmployeeID) {
    if (pBillCode == "") {
        alert("单据编码无效！");
        return false;
    }
    if (pBuDataIDStr == "") {
        alert("业务单据ID无效！");
        return false;
    }
    if (pEmployeeID == "") {
        alert("员工ID无效！");
        return false;
    }
    return true;
}
//得到流程操作参数对象
//返回值：流程操作参数对象
function GetWorkflowParams(pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, pWFOperationType, pTranActTemplateID) {
    var WFParams = new WorkflowParams();
    WFParams.BillCode = pBillCode;
    WFParams.BuDataArr = pBuDataIDStr;
    WFParams.EmployeeID = pEmployeeID;
    if (pJobVarStr == null || pJobVarStr == "") {
        WFParams.JobVarArr = "";
    }
    else {
        WFParams.JobVarArr = pJobVarStr;
    }
    if (pEmpCollection == null || pEmpCollection == "") {
        WFParams.EmployeeCollection = "";
    }
    else {
        WFParams.EmployeeCollection = pEmpCollection;
    }
    WFParams.WFOperationType = pWFOperationType;
    WFParams.TranActTemplateID = pTranActTemplateID;
    return WFParams;
}

function WFReturnParam() {
    var IsSuccess;
    var IsCanStart;
    var IsCanRecall;
    var IsCanTransact;
    var WFRetStr;
}
function GetCancelParam() {
    var defaultReturn = new WFReturnParam();
    defaultReturn.IsSuccess = false;
    return defaultReturn;
}

function mDoWorkflow(Home, pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, pWFOperationType, pTranActTemplateID) {
    if (!CheckWorkflowParams(pBillCode, pBuDataIDStr, pEmployeeID)) {
        return GetCancelParam();
    }
    var WFParams = GetWorkflowParams(pBillCode, pBuDataIDStr, pEmployeeID, pJobVarStr, pEmpCollection, pWFOperationType, pTranActTemplateID);
    var Url = Home + "WorkFlow/WFProcess/Index.aspx";
    var retValue = window.showModalDialog(Url, WFParams, 'dialogHeight=550px;dialogWidth=600px;help=no;scrollbars=no;status=no');
    return retValue;
}